/**
 * ...
 * @author Franco Ponticelli
 */

package uform.property;

import hxevents.Notifier;
import thx.util.Result;
import thx.util.Message;

interface IReadProperty<T>
{
	public var onChange(getOnChange, null) : Notifier;
	public var validators(getValidators,  null) : List < T -> Result > ;
	public function getOld() : Null<T>;
	public function get() : Null<T>;
	public function getValue() : Null<T>;
	public function getDefault() : Null<T>;
	public function hasValue() : Bool;
	public function isNull() : Bool;
	public function isValid() : Bool;
	public function getMessages() : Array<Message>;
	public function getAlt(alt : T) : T;
}



